
#pragma once


/*
注意：

windows下需要引用 ole32.lib

在linux下编译时需要安装uuid库(apt-get install uuid-dev) 链接uuid库（-luuid） 

*/


#include <string>
#ifdef _WIN32
	#include <objbase.h>
#else
	#include <uuid/uuid.h>
#endif





class UUID{
	static std::string generate();
};

inline std::string UUID::generate()
{
	char buffer[128] = { 0 };
#ifdef _WIN32
	GUID guid;  
	CoCreateGuid(&guid);
	_snprintf(buffer, sizeof(buffer),"%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X",  
			 guid.Data1, guid.Data2, guid.Data3,  
			 guid.Data4[0], guid.Data4[1], guid.Data4[2],  
			 guid.Data4[3], guid.Data4[4], guid.Data4[5],  
			 guid.Data4[6], guid.Data4[7]); 
#else
	uuid_t guid;
    uuid_generate(guid);
    uuid_unparse(guid, buffer);
#endif
	return buffer;
}